A computer cluster—referred to as a cluster for short—is a type of computer system which completes computing jobs by means of multiple collaborative computers which are connected together. These computing resources share a unified management policy and provide services to users as a whole. A single computer in a cluster system is typically called a computing node.
The cluster system has many advantages. For example, the cluster system, when working in a load-balance manner, can achieve a higher efficiency by dividing work and using multiple computers. The cluster system may also work in a master/slave server manner. Once a master server fails, a slave server provides services to users as a substitute for the master server, thereby exhibiting a high fault-tolerance.
Since the cluster system normally comprises of large amounts of computing resources which work together collectively, each incoming job must be apportioned the correct amount of system resources. This process is referred to as job scheduling. In general, job scheduling includes mapping jobs to corresponding computing resources for execution based on a job's characteristics and scheduling policies.
A typical scheduling approach uses a centralized job scheduler that assigns jobs in a queue to nodes with the requisite resources. Since the job scheduler parses through each node to find one allocated to run the job, the scheduling efficiency is reduced in a cluster scheduling system with a large number of computing nodes. In large-scale multi-nodal system, such as BlueGene or Symmetric Multiple processing (SMP), there could be as many as 65,536 nodes though this number is increasing rapidly. Accordingly, a centralized job scheduler becomes less efficient as a multi-nodal system becomes more expansive.
In some situations, a centralized job scheduler does more than just assign jobs to computing nodes. A scheduler also may keep track of the number of nodes available, what types of jobs the node is currently performing, and the characteristics of the node—i.e., the types of jobs the node is allocated to perform. As the number of nodes increases, so does the workload of the scheduler. Continually adding nodes, however, increases the scheduler's workload and may create a bottleneck. Because a centralized scheduler is tasked with collecting and updating the current status of each node, the job scheduler is also a single point of failure. If the centralized scheduler fails, then the entire multi-nodal system cannot function.